﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SpotifyGenNHibernate.CEN.Spotify;
using SpotifyGenNHibernate.CAD.Spotify;
using SpotifyGenNHibernate.EN.Spotify;
using System.Text.RegularExpressions;

namespace initializeDB
{
    public partial class frmDatosBancarios : Form
    {

        UsuarioEN usuarioActual = null;
        CancionEN cancion = null;

        public frmDatosBancarios()
        {
            InitializeComponent();
        }

        public frmDatosBancarios(UsuarioEN usu, CancionEN can)
        {
            InitializeComponent();
            usuarioActual = usu;
            cancion = can;
            lbNombreCancion.Text = lbNombreCancion.Text + cancion.Titulo;
            lbNombreCancion.Text = usuarioActual.Nombre;
        }

        private void frmDatosBancarios_Load(object sender, EventArgs e)
        {

        }

        private void btnVolver_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnComprar_Click(object sender, EventArgs e)
        {
            // comprobamos que lso datos introducidos sean correctos
            bool correcto = true;

            if (tbNombre.Text == "")
            {
                ep1.SetError(tbNombre, "Introduce un nombre");
                correcto = false;
            }
            else 
            {
                ep1.SetError(tbNombre,"");
                
            }

            if (tbCuenta1.Text == "")
            {
                ep1.SetError(tbCuenta1, "Introduce un numero de tarjeta valido");
                correcto = false;
            }
            else
            {
                if (tbCuenta1.Text.Length != 4)
                {
                    ep1.SetError(tbCuenta1, "Faltan numeros");
                    correcto = false;
                }
                else
                {
                    ep1.SetError(tbCuenta1, "");
                }
            }

            if (tbCuenta2.Text == "")
            {
                ep1.SetError(tbCuenta2, "Introduce un numero de tarjeta valido");
                correcto = false;
            }
            else
            {
                if (tbCuenta2.Text.Length != 4)
                {
                    ep1.SetError(tbCuenta2, "Faltan numeros");
                    correcto = false;
                }
                else
                {
                    ep1.SetError(tbCuenta2, "");
                }
            }

            if (tbCuenta3.Text == "")
            {
                ep1.SetError(tbCuenta3, "Introduce un numero de tarjeta valido");
                correcto = false;
            }
            else
            {
                if (tbCuenta3.Text.Length != 4)
                {
                    ep1.SetError(tbCuenta3, "Faltan numeros");
                    correcto = false;
                }
                else
                {
                    ep1.SetError(tbCuenta3, "");
                }
            }

            if (tbCuenta4.Text == "")
            {
               ep1.SetError(tbCuenta4, "Introduce un numero de tarjeta valido");
               correcto = false;
            }
            else
            {
                if (tbCuenta4.Text.Length != 4)
                {
                    ep1.SetError(tbCuenta4, "Faltan numeros");
                    correcto = false;
                }
                else
                {
                    ep1.SetError(tbCuenta4, "");
                }
            }

            if (tbCodigo.Text == "")
            {
                ep1.SetError(tbCodigo, "Introduce un codigo de seguridad valido");
                correcto = false;
            }
            else
            {
                if (tbCodigo.Text.Length != 3)
                {
                    ep1.SetError(tbCodigo, "Faltan numeros");
                    correcto = false;
                }
                else
                {
                    ep1.SetError(tbCodigo, "");
                }
            }
            // si todo esta correcto se pasa a validar los datos al banco

            if (correcto) 
            {
                try
                {
                    TPVCAD tpvCad = new TPVCAD();
                    TPVCEN tpvCen = new TPVCEN(tpvCad);
                    if (tpvCen.ValidarDatos(0, tbNombre.Text, tbCuenta1.Text + tbCuenta2.Text + tbCuenta3.Text + tbCuenta4.Text, tbCodigo.Text))
                    {
                        if (tpvCen.ComprobarCapital(0, tbCuenta1.Text + tbCuenta2.Text + tbCuenta3.Text + tbCuenta4.Text, tbCodigo.Text, cancion.Precio))
                        {
                            tpvCen.RealizarTransaccion(0, cancion.Precio);
                            // metemos la cancion comprada en la lista de canciones que tiene el usuario
                            UsuarioCAD usuCad = new UsuarioCAD();
                            UsuarioCEN usuCen = new UsuarioCEN(usuCad);
                            List<int> listaCancion = new List<int>();
                            listaCancion.Add(cancion.IdCancion);
                            usuCen.ComprarCancion(usuarioActual.Nombre,listaCancion);

                            MessageBox.Show("Tracsacion realizada con exito, pinche en OK para comenzar la descarga","Correcto");
                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show("No hay suficiente saldo en su tarjeta para realizar la compra", "Error");
                        }

                    }
                    else
                    {
                        MessageBox.Show("Los datos no son validos, por favor revisalos", "Error en los datos");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al comprar la cancion\n" + ex.ToString(), "Error");
                }
            
            }
        }
    }
}
